package controller

import (
	"fmt"
	"net/http"
	"todolist/app/model"

	"github.com/gin-gonic/gin"
)

func CreateTodo(c *gin.Context) {
	var todo model.Todo

	c.BindJSON(&todo)

	fmt.Println(todo)

	if err := model.CreateATodo(&todo); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "创建失败",
		})
	} else {
		c.JSON(http.StatusOK, gin.H{
			"code": 200,
			"msg":  "创建成功",
		})
	}

}

func GetTodoList(c *gin.Context) {
	if todoList, err := model.GetAllTodo(); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "获取失败",
		})
	} else {
		c.JSON(http.StatusOK, gin.H{
			"code": 200,
			"msg":  "获取成功",
			"data": todoList,
		})
	}
}

func UpdateTodu(c *gin.Context) {
	id, exist := c.Params.Get("id")
	if !exist {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "id无效",
		})
		return
	}
	todo, err := model.GetATodo(id)
	fmt.Printf("err: %v\n", err)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "todo不存在",
		})
		return
	}
	c.BindJSON(&todo)
	if err = model.UpdateATodo(todo); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "修改失败",
		})
	} else {
		c.JSON(http.StatusOK, gin.H{
			"code": 200,
			"msg":  "修改成功",
		})
	}
}

func DeleteTodo(c *gin.Context) {
	id, exist := c.Params.Get("id")
	if !exist {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "id无效",
		})
		return
	}
	if err := model.DeleteATodo(id); err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "删除失败",
		})
	} else {
		c.JSON(http.StatusOK, gin.H{
			"code": 200,
			"msg":  "删除成功",
		})
	}
}
